// https://leetcode-cn.com/problems/permutations/
// 46. 全排列
// 给定一个不含重复数字的数组 nums，返回其所有可能的全排列。你可以按任意顺序
// 返回答案
function permute(nums: number[]): number[][] {
    if (nums.length === 1) return [nums];

    const [head, ...rest] = nums;
    const result: number[][] = [];
    const restPermute = permute(rest);
    for (const item of restPermute) {
        for (let i = 0; i <= item.length; i++) {
            const newItem = item.slice();
            newItem.splice(i, 0, head);
            result.push(newItem);
        }
    }
    return result;
}
